SetAxisCyclicSwitch
使用軸位置來控制重複觸發數位輸出的開關。當軸達到特定的位置,開關即開啟或關閉,開關可受軸的向前與向後移動所控制。
語法
KsCommandStatus SetAxisCyclicSwitch(
int Index,
McOutput Output,
double StartPosition,
McCamSwitch CyclicSwitch,
McLengthType IntervalType,
double Interval,
McLengthType DurationType,
double Duration,
McSource ValueSource
);
參數
Index [in]:軸索引。索引以零為起點;別名將影響此參數。
Outputs [in]:選擇對應軌道所控制的數位輸出。請見 McOutput 結構。
StartPosition [in]:週期開始的位置。
CyclicSwitch [in]:控制開關動作,請見 McCamSwitch 結構。
- TrackNumber:必須為零。
- FirstOnPosition:必須為非負數,為每個周期開始位置的相關距離。
- LastOnPosition:必須為正數,且較 FirstOnPosition 為大,為每個周期開始位置的相關距離。
- Duration:必須為正數。
IntervalType [in]:Interval 類型,可使用 mcDistance 與 mcTime,請見 McLengthType 類型。
Interval [in]:週期長度,依照所選的 IntervalType 而定,須為正值。
DurationType [in]:Duration 類型,可使用 mcDistance 與 mcCount,請見 McLengthType 類型。
Duration [in]:週期重複的持續時間,依照所選的 DurationType 而定,須為正值。
ValueSource [in]:定義軸值的來源,例如:位置。請見 McSource 類型。
- mcCommandedValue, mcSetValue-同步設定值。建議使用此設定。
- mcActualValue-同步實際值。此設定可能不穩定。
- mcSecondEncoderValue – 第二編碼器讀取的實際值。
回傳值
返回 KsCommandStatus 結構。
備註
- McCamSwitch 為指定供應商的結構,用於定義數位凸輪的開關。
- McOutput 為連接至(實體)輸出的指定供應商結構,若使用本身伺服驅動器的數位輸出 (DO),需在 Start 前使用 EnableAxisOutput。
- 在 McCamSwitch 結構中,當 CamSwitchMode 為正時,不支援以下組合:
- IntervalType: mcTime, DurationType: mcDistance.
- IntervalType: mcTime, DurationType: mcCount.
- 當模數軸啟用時,SetAxisCyclicSwitch 將不受影響,軸不會將位置視為模數位置。例如,若模數值為 360,當 FirstOnPosition 設為 360,LastOnPosition 設為 540,則軸旋轉 1 圈時觸發開啟,旋轉 1.5 圈時觸發關閉。啟用模數軸後,建議使用者:
- 使用 SetAxisPositionOffset 重設位置,以防止顯示位置與內部位置不一致。例如,當模數值設為 360 時,使用者可能會看到位置為 0,而內部位置為 360000。
- 使用速度或距離 API 來觸發開關。
範例
案例 1
循環開關在持續時間內完成其任務。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
40, //FirstOnPosition
60, //LastOnPosition
1, //AxisDirection. 1 = Positive.
0, //CamSwitchMode. 0 = Position.
0 //Duration. It is not used in this case.
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcDistance, //IntervalType
100, //Interval
mcDistance, //DurationType
250, //Duration
mcSetValue //ValueSource
);
案例 2
循環開關在完成任務之前中止。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
0, //FirstOnPosition
0, //LastOnPosition
1, //AxisDirection. 1 = Positive.
1, //CamSwitchMode. 1 = Time.
0.003 //Duration
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcTime, //IntervalType
0.005, //Interval
mcCount, //DurationType
3, //Duration
mcSetValue //ValueSource
);
使用需求
RT | Win32 | |
---|---|---|
最低支援版本 | 4.1 | 4.1 |
標頭檔 | ksmotion.h | ksmotion.h |
程式庫 | KsApi_Rtss.lib | KsApi.lib |
參見